package com.boot2.core.model;

import com.boot2.core.LongBaseEntity;
import lombok.Data;
import lombok.ToString;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * @author zhangweilin
 * @date 2016-7-15 11:32:39
 * @version V1.0
 * @description  系统异常
 */
@Data
@ToString(callSuper = true)
@Entity
@Table(name = "sys_exception")
@SQLDelete(sql = "update sys_exception set is_deleted = 1 where id = ?")
@Where(clause = "is_deleted = 0")
@DynamicInsert // 加上此注解，可以只添加有值的字段
@DynamicUpdate // 此注解，是指，会先查，然后跟参数对比，不一样的就更新，所以并不是有值更新，如果db中有值，参数里没值，那么db中的值会清空
public class SysException extends LongBaseEntity
{
    /**
     * 
     */
    private static final long serialVersionUID = 2136438298510238741L;

    /**
     * 异常类型，1: 由mvc请求产生  2:由后台自主触发产生
     */
    private Integer type;

    /**
     * 异常信息摘要
     */
    private String errorMessage;

    /**
     * cause异常信息摘要
     */
    private String causeMessage;

    /**
     * 异常堆栈
     */
    private String stackTrace;

    /**
     * http头信息
     */
    private String headInfo;

    /**
     * http cookie信息
     */
    private String cookieInfo;

    /**
     * 请求方法，如 get post
     */
    private String method;

    /**
     * 请求相对路径
     */
    private String requestUri;

    /**
     * 工程名
     */
    private String servletPath;

    /**
     * 如题
     */
    private String serverName;

    /**
     * 端口
     */
    private String serverPort;

    /**
     * 如题
     */
    private String remoteAddr;

    /**
     * 如题
     */
    private String remoteHost;

    /**
     * 如题
     */
    private String protocol;

    /**
     * 请求长度
     */
    private Integer contentLength;

    /**
     * 请求类型，如text/html
     */
    private String contentType;

    /**
     * 工程名
     */
    private String contextPath;

    /**
     * 如题
     */
    private String localAddr;

    /**
     * 如题
     */
    private String localName;

    /**
     * 如题
     */
    private Integer localPort;

    /**
     * 如题
     */
    private String pathInfo;

    /**
     * 如题
     */
    private String pathTranslated;

    /**
     * 查询参数
     */
    private String queryString;

    /**
     * 如题
     */
    private Integer remotePort;

    /**
     * 如题
     */
    private String remoteUser;

    /**
     * 如题
     */
    private String requestedSessionId;

    /**
     * 如题
     */
    private String requestUrl;

    /**
     * 
     */
    private String scheme;

    /**
     * 
     */
    private String servletContextPath;

    /**
     * 
     */
    private String sessionId;

    /**
     * 
     */
    private String userPrincipal;

    /**
     * 上一个请求路径全路径
     */
    private String lastPath;

    /**
     * 当前请求全路径
     */
    private String fullUrl;

    /**
     * ip
     */
    private String ip;

    /**
     * 服务器的外网ip
     */
    private String serverIp;

    /**
     * 字符集
     */
    private String characterEncoding;
}
